Method and apparatus for contacting a touch-sensitive cursor-controlling input device to generate button values

ABSTRACT

A method and an apparatus for contacting a touch-sensitive cursor-controlling input device to generate button values simulating the button state of a mechanical button switch. This method and apparatus enable an operator to utilize the touch-sensitive cursor-controlling input device to change the value of a ButtonState variable (which simulates the ButtonState of a mechanical button switch) by (1) detecting contact intervals when the user contacts the touch-sensitive input device, (2) detecting gap intervals between subsequent contact intervals, and (3) moving the cursor on the display screen and changing the value of the ButtonState variable based on the duration of the contact and gap intervals. In turn, this button generation capability enables an operator to perform with a single touch-sensitive input device numerous control operations, such as cursor manipulation, click, multi-click, drag, click-and-drag, and multi-click-and-drag operations.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention pertains to the field of computer interfaces. Moreparticularly, the present invention relates to a method and an apparatusfor contacting a touch-sensitive cursor-controlling input device togenerate button values simulating the button state of a mechanicalbutton switch.

2. Background Art

With the virtual explosion in the number of computer systems, there hasbeen a corresponding increase in demand for input devices thatfacilitate the human interaction with these computer systems. One typeof prior art input devices simply consist of keyboards. These prior artinput devices require the human operators to enter data by typing onalpha-numeric, special function, and arrow keys of the keyboards. Theentered data are then usually displayed on computer screens.

Other more sophisticated and user-friendly prior art input interfacesuse cursor controllers and mechanical button switches to perform controloperations (such as cursor manipulation, clicking, double-clicking,dragging, clicking-and-dragging, etc.) in order to edit text, selectobjects displayed on the screen (e.g., icons, menus, scrollbars, text,etc.), or to initiate a given command (e.g., save or close a file,etc.). Under this prior art approach, the user manipulates the inputdevice in order to control the movement of the cursor on a displayscreen and to generate button signals for performing the desiredediting, selection, or command. For example, a user can select an icondisplayed on the computer screen by placing a cursor over the icon andby clicking on the mechanical button switch (i.e., by depressing andthen releasing this mechanical button switch).

There are several different types of cursor controlling input devicesfor controlling the movement of the cursor across a display screen.These input devices include a mouse, a trackball, a joystick, a writingpen, a stylus tablet, and a touchpad. Touchpads are one of the morepromising cursor controlling interface devices currently in use. Bysensing the inherent capacitance associated with a user's finger, atouchpad enables a user to control the tracking of the cursor (i.e., tomove the cursor across the display screen) with his finger. In otherwords, a user can simply trace his finger across the touchpad in orderto command the computer to move the cursor to any desired location onthe screen. After the user positions the cursor over the target, theuser can depress and release a mechanical button switch (i.e., canperform a click operation) in order to edit text, to select an objectdisplayed on the screen (e.g., select an icon, an menu, a scrollbar,etc.), or to initiate a given command (such as save or close a file). Inaddition, after using the touchpad to move the cursor to the target, auser can display the contents of the targeted object by depressing andthen releasing the mechanical button twice in rapid succession (i.e., byperforming a double-click operation).

Furthermore, a user can perform drag operations, such as grouping ofobjects or text, by using the touchpad to "wipe" over the objects ortext with the cursor while depressing the mechanical button switch. Inaddition, a user can perform additional drag operations such as "tearingoff" menus, (1) by using the touchpad to position the cursor over atargeted object, and (2) by depressing the mechanical button andmaintaining this button depressed while moving the targeted object to anew location by moving the cursor via the touchpad. A user can furtherdrag a targeted object about the screen by performing a click-and-dragoperation, which involves (1) using the touchpad to position the cursorover the targeted object, (2) selecting the targeted object bydepressing and releasing the mechanical button (i.e., by performing aclick operation), (3) depressing the mechanical button and maintainingthis button depressed while moving the object to its new location bymoving the cursor via the touchpad, and (4) releasing the object byreleasing the mechanical button switch. Finally, through the touchpadand the mechanical button, a user can perform numerous other multi-clickand multi-click-and-drag operations (e.g., triple-click, doubleclick-and-drag, triple click-and-drag, etc.).

Consequently, in order to perform click, double-click, and dragoperations, prior art touchpads not only require the use of a touchpadbut also require the use of a mechanical button switch. Prior artmechanical button switches are mounted either separately as controlbuttons or integrated into the overall pad assemblies such that thedepression of the pad surfaces actuates these switches. In either ofthese implementations, there is the added electromechanical complexityand cost. Moreover, mechanical switches integrated as part of thetouchpad require fine adjustments to prevent inadvertent operationthrough normal use of the touchpad. Also, as these adjustments varybetween users (e.g., different users prefer operation of the switchesbased on different finger pressures), the calibration of integratedmechanical button switches across a wide population becomes problematic.

Thus, there is a need in the field of computer interfaces for anapparatus and method of implementing the button generation functionwithout using a mechanical button switch. Elimination of the mechanicalbutton switch not only results in fewer parts and simplifies theassembly process, but it also enhances quality and reliability as well.Furthermore, such an apparatus and method would be ideally suited forportable computers as this method and apparatus reduces both size andweight.

SUMMARY OF THE INVENTION

The present invention provides a method and an apparatus for contactinga touch-sensitive cursor-controlling input device to generate buttonvalues simulating the button state of a mechanical button switch. Themethod and apparatus of the present invention enable an operator toutilize the touch-sensitive cursor-controlling input device to changethe value of a ButtonState variable (which simulates the ButtonState ofa mechanical button switch) by (1) detecting contact intervals when theuser contacts the touch-sensitive input device, (2) detecting gapintervals between subsequent contact intervals, and (3) moving thecursor on the display screen and changing the value of the ButtonStatevariable based on the duration of the contact and gap intervals. Inturn, this button generation capability enables an operator to performwith a single touch-sensitive input device numerous control operations,such as cursor manipulation, click, multi-click, drag, click-and-drag,and multi-click-and-drag operations.

BRIEF DESCRIPTION OF THE DRAWINGS

The objects and advantages of the present invention will become morereadily apparent to those ordinarily skilled in the art after reviewingthe following detailed description and accompanying drawings, wherein:

FIG. 1 presents a computer system upon which one embodiment of thepresent invention is implemented.

FIG. 2 shows an example of a touch-sensitive cursor-controlling inputdevice that may be utilized to implement the present invention.

FIG. 3 shows a perspective view of a computer system utilizing thetouch-sensitive input device of FIG. 2.

FIG. 4 presents one embodiment of the present invention for generatingbutton values with a touch-sensitive cursor-controlling input device,such as the touch-sensitive input device of FIG. 2.

FIG. 5 presents timing diagrams which describe the operation of theembodiment of the present invention set forth in FIG. 4.

FIG. 6 presents an alternative embodiment of the present invention forgenerating button values with a touch-sensitive cursor-controlling inputdevice, such as the touch-sensitive input device of FIG. 2.

FIG. 7 presents timing diagrams which describe the operation of theembodiment of the present invention set forth in FIG. 6.

FIGS. 8 and 9 present yet another embodiment of the present inventionfor generating button values with a touch-sensitive cursor-controllinginput device, such as the touch-sensitive input device of FIG. 2,wherein the steps of this embodiment of the present invention areimplemented by a touch-sensitive input driver stored in the computersystem.

FIG. 10 presents a computer system upon which the embodiment of thepresent invention sets forth in FIGS. 8 and 9 is implemented.

FIG. 11A-11J present timing diagrams describing the operation of theembodiment of the present invention set forth in FIGS. 8 and 9.

DETAILED DESCRIPTION

The present invention is a method and an apparatus for contacting atouch-sensitive cursor-controlling input device to generate buttonvalues corresponding to the button state (i.e., the up and down states)of a mechanical button switch. In the following description, forpurposes of explanation, numerous specific details are set forth inorder to provide a thorough understanding of the present invention.However, it will be understood by one of ordinary skill in the art thatthe present invention may be practiced without these specific details.In other instances, well-known structures and devices are shown in blockdiagram form in order not to obscure the description of the presentinvention with unnecessary detail.

FIG. 1 presents a computer system upon which one embodiment of thepresent invention is implemented. Computer system 100 includes a bus orother communication means 105 for communicating information. Amicroprocessor 110 couples with bus 105 for processing digital data.Computer system 100 further includes a random access memory (RAM) orsome other dynamic storage device 115 (referred to in FIG. 1 as mainmemory), which also couples to bus 105. Main memory 115 stores digitaldata and program instructions for execution by processor 110. Mainmemory 115 also may be used for storing temporary variables or otherintermediate information during execution by processor 110. Computersystem 100 also includes a read only memory (ROM) and/or other staticstorage device 120 coupled to bus 105 for storing static information andinstructions for processor 110. In addition, mass data storage device125 such as a magnetic disk or an optical disk and its correspondingdisk drive may also be included.

Computer system 100 may further include a display device 130, such as acathode ray tube (CRT) or a liquid crystal display (LCD) coupled to bus105 for displaying information to a computer user. Alphanumeric inputdevice 135 (e.g., a keyboard) may also be coupled to bus 105 forcommunicating information and command selections to processor 110. Anadditional user input device which may be coupled to bus 105 is cursorcontroller 140. Input device 140 may take many different forms, such asa mouse, a trackball, a stylus tablet, a touch-sensitive input device(e.g., a touchpad), etc. Microcontroller 155 provides an interfacebetween cursor controller 140 and bus 105. Another device which may becoupled to bus 105 is hard copy device 145 which may be used forprinting a hard copy on paper. It should be noted that any or all of thecomponents of computer system 100 and associated hardware may be used inconjunction with the present invention. However, it is appreciated thatany type of configuration of the system may be used for various purposesas the user requires.

As mentioned before, one embodiment of cursor controller 140 of FIG. 1is a touch-sensitive input device. This touch-sensitive input device maybe a separate pad which could be held in the hand, placed on a desktop,or built into the computer keyboard. An operator utilizes thistouch-sensitive input device by contacting (e.g., touching the devicewith his finger), which in turn causes a cursor to move across thedisplay device based on the information pertaining to the operator'scontact (e.g., the displacement of the operator's finger on this device)that this device provides to the computer. In addition, as mentionedbelow, the method and apparatus of the present invention enable anoperator to generate button values by contacting this touch-sensitiveinput device. More specifically, an operator can utilize thistouch-sensitive input device to change the value of a ButtonStatevariable (which simulates the button state of a mechanical buttonswitch) based on the temporal duration of the user's contacts with thistouch-sensitive input device (i.e., based on the duration of the contactintervals) and the lapse of time between subsequent contact intervals(i.e., based on the duration of the gap intervals between the contactintervals).

FIG. 2 presents one embodiment of the touch-sensitive input device thatmay be utilized to implement the present invention. For one embodimentof the present invention, touch-sensitive cursor-controlling inputdevice 200 of FIG. 2 is a touchpad. Touchpad 200 includes virtualelectrode pad 205, electrical balance measurement circuit 215, balanceratio determination circuit 220, and microcontroller 225. For oneembodiment of the present invention, virtual electrode pad 205 is in theshape of a rectangular sheet. It is capable of forming "virtualelectrodes" at various positions on its top and bottom surfaces. Theseelectrodes are denoted as "virtual electrodes" since separate conductivestrips on the two sides of pad 205 are used to form single elementsdenoted as "virtual electrodes." The virtual electrodes are connected toelectronic circuitry capable of measuring the electrical balance betweenselected top and bottom virtual electrodes.

Balance ratio determination circuit 220 determines the ratio of onebalance measurement to another. Microcontroller 225 selects appropriateelectrodes for balance measurement and ratio determination.Microcontroller 225 also responds to balance ratios to calculateposition information of the sensed object (e.g., finger 210). Thisinformation may include positional data along one axis or two axesparallel to the electrode pad surface (e.g., along the x and y axes).Additional "proximity" information along an axis perpendicular to thesurface of electrode pad 205 (e.g., along the z-axis) may also bedetermined from an appropriate balance measurement. Position informationdetermined by microcontroller 225 is provided to a utilization means230, which may be any of a variety of electronic or computer devices(such as computer system 100).

Consequently, touchpad 200 generates x, y, and z data pertaining to theuser's contact with the touchpad (e.g., pertaining to the position ofthe operator's finger on the touchpad) over some region in the x, y andz directions. Velocities, accelerations, timing differentials, andsignal strengths can be determined from this data string. As mentionedbelow, when these parameters are considered along with prior events, itis possible to discern between cursor manipulation, click, multi-click,drag, click-and-drag, and multi-click-and-drag operations. Additionally,raw x, y, and z data can be filtered to optimize the operation of thetouch-sensitive input device as perceived by the user.

Since feedback to the user that an operation has been initiated orcompleted is important, feedback to the user can be incorporated intothe present invention through the use of audio signals (e.g., variousbeeps, clicks, or customizable sounds issued through the computer'ssound system) or video signals (e.g., a change in shape, color, orhighlighting of the cursor, on-screen status indicator, etc.).

FIG. 3 shows a perspective view of a computer system 300 having touchpad200 of FIG. 2. Personal computer 300 includes a keyboard 310, palm rests315, display screen 320, and touchpad 305. Touchpad 305 enables a userto control the movements of cursor 325 on screen 320 by contacting thetouchpad (e.g., by moving his finger across the touchpad). In addition,based on the duration of an operator's contacts with thistouch-sensitive input device and the duration of gap intervals betweensubsequent contact intervals, touchpad 305 enables a user to generatebutton values which simulate the button state (i.e., the up or downposition) of a mechanical button switch. Although computer 300 can beany of a variety of computers, for one embodiment of the presentinvention it is a laptop computer which is a single integrated unit(i.e., has all of its elements placed within one case) and which issmall enough to fit onto a user's lap.

Inside computer system 300 reside all the essential and well knownelectronic circuitry (such as the components shown in FIG. 1) for thecomputer's operation.

FIG. 4 presents one embodiment of the present invention for generatingbutton values by contacting a touch-sensitive cursor-controlling inputdevice such as the touch-sensitive input device of FIG. 2. Thisembodiment of the present invention can be implemented by buttongeneration circuitry in the touch-sensitive input device or in thecomputer system. Alternatively, this embodiment of the present inventioncan be implemented as a software code (i.e., a code residing in the RAM)or a firmware code (i.e., a code residing in the ROM) in either thecomputer system or the touch-sensitive input device.

The operation of this embodiment of the present invention will now bedescribed by reference to FIG. 4 and FIG. 5 (which presents oneembodiment of the timing diagrams for the operation of this embodimentof the present invention). The initial step in the flowchart of FIG. 4is the start/reset step 400. During this step, a ButtonState variable,simulating the button state of a mechanical button switch, is set toequal an Up value (i.e., a first predetermined button value). If theuser contacts the touch-sensitive input device for a first time (e.g.,if the user touches the input device with his finger for a first time),the process then transitions to step 405. At step 405 a determination ismade whether the first contact interval (t_(T1)) lasts longer than auser selectable predetermined maximum tap interval (t_(MAX)). Also, atstep 405 an integer variable N, representing the number of contactintervals for performing a particular control operation (such as acursor manipulation, click, multi-click, drag, click-and-drag, andmulti-click-and-drag operations), is set equal to one.

As shown in Part A of FIG. 5, if the first contact interval lasts longerthan the maximum tap interval (i.e., if t_(T1) >t_(MAX)), the operationof the touch-sensitive cursor-controlling input device during the firstcontact interval is identified as a cursor control operation (i.e., acursor tracking operation). Thus, positional data relating to the user'scontact with the touch-sensitive input device is supplied to thecomputer system in order to effectuate cursor movement on the computerscreen. In addition, once this initial cursor tracking operation isterminated (e.g., once the user removes his finger from the touchpad)the process resets to step 400. Alternatively, if at step 405 adetermination is made that the first contact interval does not lastlonger than the maximum tap interval (i.e., if t_(T1) ≦t_(MAX)), theprocess transitions to step 410, during which (as shown in Parts B-F ofFIG. 5) the ButtonState variable is set equal to a Down value (i.e., asecond pre-determined level) and number of contacts variable N isincremented by one.

From step 410 the process transitions to step 415, where a determinationis made whether the user initiates an N^(th) contact after the (N-1)thcontact in less than a predetermined maximum gap time (i.e., t_(GMAX)).In other words, at step 415, a determination is made whether the timeinterval between the (N-1)th contact interval and the N^(th) contactinterval is longer than a predetermined maximum gap interval (t_(GMAX)).As shown in Part B of FIG. 5, if the gap interval is longer than thepredetermined maximum gap interval (i.e. if t_(G) >t_(GMAX)), theprocess identifies the user's contact with the touch-sensitive inputdevice as a click operation, and therefore transitions back to resetstep 400 to set the value of the ButtonState variable equal to the Upvalue.

On the other hand, if the gap time between the (N-1)^(th) contactinterval and the N^(th) contact interval is not longer than the maximumgap time (i.e. if t_(G) ≦t_(GMAX)), the process transitions from step415 to step 420. During step 420, a determination is made if the N^(th)contact interval lasts longer than the predetermined maximum tapinterval (i.e., if t_(TN) >t_(MAX)). As shown in Part D of FIG. 5, ifthe N^(th) contact interval does last longer than the maximum tapinterval, the process identifies the user's contacts with thetouch-sensitive input device as a drag operation and thus transitions tostep 425. At step 425, the process supplies to the computer thepositional data corresponding to the user's contact with thetouch-sensitive input device (i.e., supplies cursor tracking data to thecomputer system), which along with the button down value for theButtonState variable enables the computer to perform the requested dragoperation.

Once the user terminates his N^(th) contact with the touch-sensitiveinput device (e.g., once the user removes his finger from thetouch-sensitive input device for the N^(th) time), the processtransitions to step 435. During this step, a determination is madewhether after the N^(th) contact interval, the operator recontacts thetouch-sensitive input device in less than a predetermined maximum stickydrag time (i.e., t_(S) ≦t_(SMAX)). If so, the process transitions backto step 425 and resumes its drag operation by resuming to supply to thecomputer cursor tracking data while ButtonState is set to the Downvalue. In other words, as shown in Part F of FIG. 5, step 435 enables auser to continue a drag operation even after momentarily terminating acontact with the touch-sensitive input device. This sticky drag featureof the present invention allows a user to quickly reposition his contact(e.g., his finger) without dropping a selected item. This feature isadvantageous when, for example, the user's finger reaches the edge ofthe pad and has to be repositioned in order to continue dragging anitem. In one embodiment of the present invention, at step 435, beforethe sticky drag determination is made an initial determination is madewhether the user was contacting the pad at its edge prior to thetermination of the contact. This determination in turn allows the stickydrag feature to only be activated for situations where the user reachesthe edge of the pad.

Alternatively, as shown in Parts C and E of FIG. 5, if at step 420 adetermination is made that the N^(th) contact interval is an N^(th) tapinterval whose duration is not longer than the maximum tap time(t_(MAX)), the process identifies user's contacts with thetouch-sensitive input device as a possible multi-click, click-and-dragor multi-click-and-drag operation, and thus sets the value of theButtonState variable equal to the Up value by transitioning to step 430.From step 430, the process transitions back to step 410, during whichthe ButtonState variable is again set equal to the Down value (as shownin Parts C and E of FIG. 5) and N is incremented by one.

Then at step 415, if the gap time (t_(GN)) between the N^(th) contactinterval and the (N-1)th contact interval is greater than the maximumgap time (t_(GMAX)), the process identifies the user's contacts with thetouch-sensitive input device as a multi-click operation and thustransitions back to reset step 400 where the ButtonState variable is setequal to the Up value (as shown for a double-click operation in Part Cof FIG. 5). Alternatively, if the gap time between the N^(th) contactinterval and the (N-1)th contact interval is less than or equal to themaximum gap time (i.e., if t_(GN) ≦t_(GMAX)), steps 420-435 are thenperformed in order to perform multi-click, click-and-drag, andmulti-click-and-drag operations. For example, the user can perform aclick-and-drag (as shown in Part E of FIG. 5) or multi-click-and-dragoperation by causing the process of FIG. 4 to transition from step 415to steps 420, 425, and 435.

FIG. 6 presents an alternative embodiment of the present invention forgenerating button values by contacting a touch-sensitivecursor-controlling input device, such as the touch-sensitive inputdevice of FIG. 2. This embodiment of the present invention can beimplemented by button generation circuitry in the touch-sensitive inputdevice or in the computer system. Alternatively, this embodiment of thepresent invention can be implemented as a software code or a firmwarecode in either the computer system or the touch-sensitive input device.Furthermore, this embodiment of the present invention generates buttonvalues based on the temporal duration of the user's contacts with thetouch-sensitive input device (i.e., based on the duration of the contactintervals) and the lapse of time between subsequent contact intervals(i.e., based on the duration of the gap intervals between subsequentcontact intervals). More specifically, this embodiment of the presentinvention operates by (1) initiating timers at the initiation ortermination of a contact interval, and (2) then determining whether theuser terminates his contact or initiates another contact prior to theexpiration of these timers. These timers can be either count up or countdown timers, which respectively expire when they reach a predeterminedexpiration value by counting up or by counting down. In addition, forthe embodiment of the present invention shown in FIG. 6, the value ofeach of the timers can be adjusted by the user.

The operation of this embodiment of the present invention will now bedescribed by reference to FIG. 6 and FIG. 7 (which presents oneembodiment of the timing diagrams for this embodiment of the presentinvention). In the following description, contact intervals areinitiated by the user placing his finger down on the touch-sensitiveinput device (i.e., by a finger down operation) and contacts areterminated by the user removing his finger from the input device (e.g.,by the user performing a finger up operation). However, it is to beunderstood that the user can employ alternative means (such as amechanical object) for initiating and terminating his contacts with thetouch-sensitive input device.

As shown in FIG. 6, this embodiment of the present invention initiatesat start/reset step 600. At this step, the value of a ButtonStatevariable, simulating the button state of a mechanical button switch, isset to equal an Up value (e.g., a first predetermined value). Once theuser places his finger on the touch-sensitive input device (i.e., oncethe user performs a finger down operation for a first time), the processtransitions to step 605 in order to initiate a tap timer (i.e., in orderto cause a tap timer to start counting). If the tap timer expires priorto user removing his finger, a latent press timer is initiated at step610. As shown in Part E of FIG. 7, if the user does not move his fingeron the touch-sensitive input device for the duration of the latent presstimer, the process (1) transitions to step 635a where the ButtonStatevariable is set equal to a Down value (e.g., a second predeterminedbutton value), and (2) then transitions to step 635b where cursortracking data is supplied to the computer in order to cause a dragoperation to be performed. However, if the user moves his finger priorto the expiration of the latent pressed timer, the process identifiesthe user's contact as a cursor tracking operation (as shown in Part A ofFIG. 7) and thus transitions to step 620. At step 620, the processperforms the cursor tracking operation by supplying positional datarelating to the user's contact (e.g., data pertaining to the user'sfinger position) to the computer system. Once the cursor trackingoperation is terminated, the process then returns to start/reset step600.

Alternatively, as shown in Parts B-D and F-H of FIG. 7, if at step 605the tap timer does not expire prior to the removal of the first fingerdown, the ButtonState variable is set equal to the Down value (i.e., asecond predetermined value) and a first gap timer is initiated at step615. If the gap timer expires prior to the user placing his finger downagain (i.e., prior to a second finger down), the process identifies thatthe first finger down (which caused the transition from step 600 to step605) and the first finger up (which caused the transition from step 605to step 615) as a single click operation. Thus, as shown in Part B ofFIG. 7, the process transitions back to step 600, where the ButtonStatevariable is set equal to an Up value.

On the other hand, if the first gap timer does not expire before theuser puts his finger back down on the touch-sensitive input device(i.e., if the gap timer does not expire before a second finger downoperation), a multi-click timer is initiated at step 625. If themulti-click timer does not expire before the user removes his finger(i.e., before another finger up operation), the process transitions tostep 630 where a second gap timer is initiated. In addition, as shown inParts C and F of FIG. 7, the process at step 630 momentarily set thevalue of the ButtonState variable equal to the Up value (which therebyproduces a click operation) and then sets the value of the ButtonStatevariable equal to the Down value. Furthermore, if the second gap timerexpires before the user recontacts the touchpad, the process recognizesthe past finger up and finger down operations as performing a multi-lickoperation and thus transitions back to reset step 600 to set the valueof the ButtonState variable to the Up value (as shown for a double-clickoperation in Part C of FIG. 7). However, if the second gap timer doesnot expire before another finger down operation is performed, theprocess transitions back 625 in order to allow the user to performmulti-click and multi-click-and-drag operations.

Alternatively, if at step 625 the multi-click timer expires prior to theuser removing his finger (i.e., prior to another finger up), the processtransitions to step 635b. At this step, in order to allow the user toperform drag, click-and-drag, and multi-click-and-drag operations,cursor manipulation data is supplied to the computer (as shown in PartsD-H of FIG. 7). Once the user removes his finger, the process thentransitions from step 635b back to start/reset step 600 if the dragoperation did not involve movement of an object. Drag operations do notinvolve movement of objects in several instances, such as when dragoperations are performed to "wipe" over text, to scroll data, and toselect objects from menus.

However, if the drag operation involved movement of an object, theprocess transitions from step 635b to step 640 once the user removes hisfinger. At step 640, a sticky drag timer is initiated. As shown in PartsD-F of FIG. 7, if prior to the expiration of this sticky drag timer theuser does not recontact the touch-sensitive input device, the processsets the value of the ButtonState variable equal to the Up value bytransitioning back to start/reset step 600. However, if the userrecontacts the touch-sensitive input device prior to the expiration ofthe sticky drag timer, a disengage sticky drag timer is initiated atstep 645. As shown in Part H of FIG. 7, if the user removes his fingerbefore the disengage sticky drag timer expires, the process transitionsback to start/reset step 600. Therefore, the disengage sticky drag timerprovides an operator with the ability to circumvent the sticky dragfeature of this embodiment of the present invention. Alternatively, asshown in Part G of FIG. 7, if the user does not remove his finger priorto the expiration of the sticky drag disengage timer, the processtransitions back to step 635b in order to allow the user to continue hisdrag, click-and-drag, or multi-click-and-drag operation.

FIGS. 8 and 9 present yet another embodiment of the present inventionfor generating button values with a touch-sensitive cursor-controllinginput device, such as a touch-sensitive input device of FIG. 2. Thisembodiment of the present invention is implemented upon computer system1010 of FIG. 10. As shown in this figure, computer system 1010communicates with mouse 1015, keyboard 1020, and touchpad 1025 throughdesktop bus 1035, whose operation is controlled by the microcontrollersof desktop transceiver 1005 and of the input devices (i.e., mouse 1015,keyboard 1020, and touchpad 1025). These microcontrollers use a specificprotocol (e.g., the Apple® desktop bus protocol) to communicate to eachother through the desktop bus. In one embodiment of the presentinvention, computer system 1010 is one of the Macintosh® family ofpersonal or laptop computers such as the Macintosh® Quadra®), Performa®,Powerbook®, PowerMac® brand personal computers manufactured by Apple®Computer, Inc. of Cupertino, Calif. (Apple, Macintosh, Quadra, Performa,Powerbook, and PowerMac are registered trademarks of Apple Computer,Inc.).

For one embodiment of the present invention, the steps of the flowcharts of FIGS. 8 and 9 are performed by a touchpad driver residing inmemory unit 1040 of computer system 1010. Touchpad driver 1045 generatesbutton values, corresponding to the button position of a mechanicalswitch, based on the temporal duration of the user's contact with thetouchpad (i.e., based on the duration of the contact intervals) and thelapse of time between subsequent contact intervals (i.e., based on theduration of the gap intervals between subsequent contact intervals).Consequently, once the touchpad driver has examined a data packet comingfrom touchpad 1025 in order to determine whether to change the value ofa ButtonState variable, touchpad driver 1045 initializes mouse driver1050. The mouse driver then examines positional data coming from thetouchpad and the ButtonState variable, in order to perform controloperations (such as cursor manipulation, click, multi-click, drag,click-and-drag, and multi-click-and-drag operations).

The operation of this touchpad driver will now be described withreference to FIGS. 8 and 9. At step 800, a determination is made whetherinformation transmitted to desktop bus transceiver 1005 via desktop bus1035 originated from touchpad 1025. If so, at step 810, thedetermination is made whether this communication from the touchpadpertains to positional data relating to a change in the user's contactwith the touchpad (e.g., whether the data indicates a change in theuser's finger position on the touchpad in the x and y axes). In oneembodiment of the present invention, this determination of step 810involves ascertaining whether the communication from touchpad 1025originated from the register in microcontroller 1030 (of touchpad 1025)which stores information about the x and y displacements along thetouchpad. If this data packet does not indicate a change in thepositional data relating to a user's contact with the touchpad, then thetouchpad driver transitions to step 890 which initiates the mousedriver. As mentioned before, after the touchpad driver performs thenecessary analysis for its button generation function, the touchpaddevice enables the mouse driver to perform control operations byexamining the positional data pertaining to the touchpad and the valueof the ButtonState variable.

On the other hand, if the data packet that the touchpad transmits to thecomputer involves data pertaining to a change in the user's contact withthe touchpad, steps 820-880 are executed. In step 820, a variableSampleTime is set equal to the value of a clock unit at the time whenthe process transitioned from step 810 to step 820. Since the processtransitions from step 810 to step 820 when data pertaining to a changein the user's contact with the touchpad arrives from the touchpad,SampleTime corresponds to the time of arrival of the last data packetfrom the touchpad. In one embodiment of the present invention, the clockis TickCount, which is a Macintosh low memory global dock containing thenumber of "ticks" (where each tick is one sixtieth of a second) sincethe computer was turned on. As mentioned below, the variable SampleTimeis used to determine the time that elapses between the time that theuser initiates a contact with the touchpad (e.g., places his finger downon the touchpad) and the time the user terminates this contact with thetouchpad (e.g., removes his finger from the touchpad.)

At step 830, a determination is made whether a Boolean variable,FingerDown, has a value of True or False. If this Boolean variable isnot True, the touchpad driver next transitions to step 840, while if itis True the process transitions to step 890. At step 840, the value ofthe FingerDown variable is set to True, and a variable DownTime is setequal to SampleTime. Thus, when the user initiates the first contactwith the touchpad (i.e., when computer system 1010 receives the firstdata packet from the touchpad after either step 935 or 950 of FIG. 9 hasset the value of the FingerDown variable to False), the process of FIG.8 transitions from step 830 to 840 and sets the FingerDown variable toTrue. At step 850, a determination is made whether the timer procedureof FIG. 9 has been initialized. If so, the touchpad driver transitionsto step 880.

Otherwise, steps 860 and 870 are executed. In step 860, the timerrunning condition is set to be True and the value of a TimerPeriodvariable is set to equal a predetermined user selectable value. In oneembodiment of the present invention, the TimerPeriod variable is setequal to one half of DoubleTime, which is a Macintosh low memory globalvariable representing the maximum number of ticks allowed between twoclicks in a double-click operation. The use of DoubleTime is convenientbecause it is user-adjustable and it relates to how fast an operatormight depress and release the mechanical button switch.

Next, at step 870, a TimerManager program is initiated whose solepurpose is to start the timer procedure of FIG. 9 once everyTimerPeriod. More specifically, this TimerManager program repeatedlycalls the timer procedure once every TimerPeriod until it is canceled atstep 950 of FIG. 9. Finally, at step 880, the touchpad driver programperforms an OR operation on the ButtonState variable (whose value iscontrolled by the timer procedure of FIG. 9) with an actual mechanicalbutton switch value. This allows the mechanical button switch tooverride the touchpad. At step 890, the value of the ButtonStategenerated at step 880 and value of the x, y, and z touchpad informationis then supplied to the standard mouse driver, which then performs therequested control operation.

FIG. 9 presents one embodiment of the timer procedure that operates inconjunction with the steps of FIG. 8 to produce button values. At step900, this timer procedure is initialized every TimerPeriod by theTimerManager program, which is installed by the process of FIG. 8. Atstep 905, the computer reads the z-axis information from the touchpad inorder to determine if the user has terminated his contact with thetouchpad. Then, at step 910, a determination is made as to whether thez-axis data read from the touchpad is less than a predeterminedthreshold value (z_(threshold)). The z-axis data is compared to athreshold value at step 910 in order to optimize the operation of thetouch-sensitive input device by performing a filtering operation. If thez-axis data is not less than the z_(threshold) value, the process ofFIG. 9 then executes step 940, which resets the TimerManager program forcalling the timer procedure at the next TimerPeriod interval.

Otherwise, if the z-axis data is greater or equal to the predeterminedz_(threshold) value (which indicates that the user is no longercontacting the touchpad), a determination is made as to the value of theFingerDown Boolean variable. If this variable is True, an UpTimevariable is created and its value is set equal to the clock value at themoment that the timer procedure transitioned from step 915 to step 920.Since the process of FIG. 9 transitions from step 915 to step 920 onlyonce for each contact interval (as step 935 sets the value of FingerDownto false) and only after the user terminates his contact (as the processcan only transition from steps 910 to 920 if at step 910 a determinationis made that the z-axis data is less than z_(threshold)), UpTimecorresponds to the time that the user terminates his contact with thetouchpad. At step 925, a determination is then made as to whether UpTimeminus DownTime is less than a user selectable maximum tap time(t_(TAPMAX)). If this is true, then at step 930 the ButtonState variableis caused to toggle (i.e., to change from Up to Down or to change fromDown to Up). Otherwise, step 930 is skipped. At step 935, the FingerDowncondition is set to false. As mentioned before, at step 940, the TimerProcedure resets the timer process for another pass and the processexits.

On the other hand, if at step 915 a determination is made that theFingerDown variable is false, step 945 is performed. In step 945, adetermination is made as to whether the clock minus UpTime variable isgreater than a user selected maximum sticky time. If the result isnegative, then step 940 is executed. Otherwise, at step 950, theFingerDown and TimerRunning conditions are set to be false, theTimerManager is canceled, and the ButtonState variable is set equal tothe Up value at step 950.

As mentioned before, the embodiment of the present invention set forthin FIGS. 8 and 9 provides a method for contacting a touchpad to changethe value of a button variable, which simulates the button state (e.g.,the up or down position) of a mechanical button switch. Morespecifically, this embodiment of the present invention enables anoperator to generate button values based on the duration of the contactintervals and the frequency of the contact intervals. In turn, as shownin FIG. 11, this button generation capability enables an operator toperform with a single touch-sensitive cursor-controlling input devicenumerous control operations, such as cursor manipulation, click,multi-click, drag, click-and-drag, and multi-click-and-drag operations.

For example, as shown in Part A of FIG. 11, an operator can perform acursor manipulation operation by contacting the touch-sensitive inputdevice and maintaining this contact for more than a user-selectablemaximum tap interval (i.e., t_(T1) >t_(TAPMAX)). In other words, whenthe contact interval is longer than the maximum tap interval, thisembodiment of the present invention does not produce a button downsignal and only initializes the mouse driver in order to cause thisdriver to examine the positional data coming from the touchpad toperform the requested cursor tracking operation. However, as shown inPart B of FIG. 11, an operator can perform a click operation by (1)maintaining his first contact with the touch-sensitive input device forless than the maximum tap interval, and (2) not initiating a secondcontact interval with the touch-sensitive input device until the maximumsticky time has elapsed. In addition, as shown in Part C of FIG. 11, anoperator can perform a click operation by twice quickly tapping thetouch-sensitive input device, where each tap toggles the ButtonStatevariable once.

Moreover, an shown in Parts D--G of FIG. 11, this embodiment of thepresent invention enables an operator to perform a double-clickoperation by performing two click operations in a row. It should benoted that in this embodiment of the present invention, the mouse drivermeasures the gap time between subsequent click operations, in order toascertain whether the subsequent click operations are part of amulti-click operation. Furthermore, as shown in Parts H-J in FIG. 11, auser can perform a drag operation (i.e., generate a button down valueand maintain this button down value for the duration of the contactinterval during which the user tracks across the touchpad) if (1) afirst contact interval is not longer than the maximum tap interval, (2)the gap interval between the first contact interval and the secondcontact interval is not greater than the user-selectable maximum stickytime, and (3) the second tap interval lasts longer than the maximum tapinterval. As shown in Part I of FIG. 11, this embodiment of the presentinvention also allows a user to reposition his finger during a dragoperation. Finally, as shown in Part J of FIG. 11, this embodiment ofthe present invention enables an operator to cancel the sticky dragfeature by quickly tapping the touch-sensitive input device at the endof a drag operation, in order to toggle the ButtonState variable.

It will be recognized that the above-described invention may be embodiedin other specific forms without departing from the spirit or theessential characteristics of the invention. For example, although theabove-mentioned embodiments generate a ButtonDown value at thetermination of the user's contact with the touch-sensitive input device,it will be understood by one skilled in the art that alternativeembodiments of the present invention generate a button down signal atdifferent times. For example, a button down signal can be generated (1)when the user initiates a contact, (2) a predetermined amount of timeafter the user initiates a contact with the touch-sensitive inputdevice, or (3) a predetermined amount of time after the user terminateshis contact with the touch-sensitive input device. However, it should benoted that selection upon lifting has the advantage of allowing the userto move off of a mistakenly selected object without activating it. Inaddition, alternative embodiments of the present invention determine thez-axis velocity and acceleration of the contact in order to furtherdiscern between operations. Z-axis sensitivity may also be used todiscern operations by indicating how far the finger was lifted off thetouchpad during the operation. Thus, while certain exemplary embodimentshave been described and shown in the accompanying drawings, it is to beunderstood that the invention is not limited by the foregoingillustrative details, but rather is defined by the appended claims.

What is claimed is:
 1. A method of operating a touch-sensitive inputdevice of a computer system comprising the steps of:a) detecting contactintervals when a user contacts the touch-sensitive input device; b)detecting gap intervals between subsequent contact intervals; and c)distinguishing between a first cursor control operation, a second cursorcontrol operation and a third cursor control operation based on theduration of said contact and gap intervals; and d) reporting one of saidfirst, second or third cursor control operations in accordance with saidstep of distinguishing.
 2. A method of using a touch-sensitive inputdevice coupled to a computer system to move a cursor on a display screenof the computer system and to change the value of a ButtonState variableto one of a first button value and a second button value, saidButtonState variable simulating a button state of a mechanical buttonswitch, said method comprising the steps of:a) detecting a first contactinterval when a user first contacts said touch-sensitive input device;b) determining if said first contact interval lasts longer than a firstpredetermined maximum time interval; c) supplying positional datarelating to the first contact interval to said computer system to causethe cursor to move across said display screen if said first contactinterval lasts longer than said first predetermined maximum timeinterval; d) setting the value of the ButtonState variable to the firstbutton value if said first contact interval does not last longer thansaid first predetermined maximum time interval; e) detecting whether asecond contact interval follows said first contact interval in less thana second predetermined maximum time interval; f) setting the value ofthe ButtonState variable to the second button value if said secondcontact interval does not follow said first contact interval in lessthan said second predetermined maximum time interval; g) determining ifsaid second contact interval lasts longer than a third redeterminedmaximum time interval if said second contact interval does follow saidfirst contact interval in less than said second predetermined maximumtime interval; h) supplying positional data relating to the secondcontact interval to said computer system to cause the cursor to moveacross said display screen if said second contact interval lasts longerthan said third predetermined maximum time interval; i) detectingwhether a third contact interval follows said second contact interval inless than a fourth predetermined maximum time interval; j) setting thevalue of the ButtonState variable to the second button value if saidthird contact interval does not follow said second contact interval inless than said fourth predetermined maximum time interval; k)determining if said third contact interval lasts longer than a fifthpredetermined maximum time interval if said third contact interval doesfollow the second contact interval in less than said fourthpredetermined maximum time interval; and l) supplying positional datarelating to the third contact interval to said computer system in orderto maintain the cursor movements initiated by supplying positional datarelating to the second contact interval to the computer system if saidthird contact interval lasts longer than said fifth predeterminedmaximum time interval.
 3. The method of claim 2 further comprising thestep of setting the value of the ButtonState variable to the secondbutton value if said third contact interval does not last longer thansaid fifth predetermined maximum time interval.
 4. A method of using atouch-sensitive input device coupled to a computer system to move acursor on a display screen of the computer system and to change thevalue of a ButtonState variable to one of a first button value and asecond button value, said ButtonState variable simulating a button stateof a mechanical button switch, said method comprising the steps of:a)detecting a first contact interval when a user first contacts saidtouch-sensitive input device; b) determining if said first contactinterval lasts longer than a first predetermined maximum time interval;c) supplying positional data relating to the first contact interval tosaid computer system to cause the cursor to move across said displayscreen if said first contact interval lasts longer than said firstpredetermined maximum time interval; d) setting the value of theButtonState variable to the first button value if said first contactinterval does not last loner than said first predetermined maximum timeinterval; e) detecting whether a second contact interval follows saidfirst contact interval in less than a second predetermined maximum timeinterval; f) setting the value of the ButtonState variable to the secondbutton value if said second contact interval does not follow said firstcontact interval in less than said second predetermined maximum timeinterval; g) determining if said second contact interval lasts longerthan a third predetermined maximum time interval if said second contactinterval does follow said first contact interval in less than saidsecond predetermined maximum time interval; h) supplying positional datarelating to the second contact interval to said computer system to causethe cursor to move across said display screen if said second contactinterval lasts longer than said third predetermined maximum timeinterval; i) setting the value of the ButtonState variable to the secondbutton value if said second contact interval does not last longer thansaid third predetermined j) setting the value of the ButtonStatevariable to the first button value; k) detecting whether a third contactinterval follows said second contact interval in less than a fourthpredetermined maximum time interval; l) setting the value of theButtonState variable to the second button value if said third contactinterval does not follow said second contact interval in less than saidfourth predetermined maximum time interval; m) determining if said thirdcontact interval lasts longer than a fifth predetermined maximum timeinterval if said third contact interval does follow said second contactinterval in less than said fourth predetermined maximum time interval;and n) supplying positional data relating to the third contact intervalto said computer system to cause the cursor to move across said displayscreen if said third contact interval lasts longer than said fifthpredetermined maximum time interval.
 5. An apparatus for operating atouch-sensitive input device of a computer system comprising:a) meansfor detecting contact intervals when a user contacts the touch-sensitiveinput device; b) means for detecting gap intervals between subsequentcontact intervals; and c) means for distinguishing between a firstcursor control operation, a second cursor control operation and a thirdcursor control operation based on the duration of said contact and gapintervals and for reporting one of said first second or third cursorcontrol operations in accordance therewith.
 6. An apparatus for using atouch-sensitive input device coupled to a computer system to move acursor on a display screen of the computer system and to change thevalue of a ButtonState variable to one of a first button value and asecond button value, said ButtonState variable simulating a button stateof a mechanical button switch, said apparatus comprising:a) circuitryfor detecting a first contact interval when a user first contacts saidtouch-sensitive input device; b) circuitry for determining if said firstcontact interval lasts longer than a first predetermined maximum timeinterval; c) circuitry for supplying positional data relating to thefirst contact interval to said computer system to cause the cursor tomove across said display screen if said first contact interval lastslonger than said first predetermined maximum time interval; d) circuitryfor setting the value of the ButtonState variable to the first buttonvalue if said first contact interval does not last longer than saidfirst predetermined maximum time interval; e) circuitry for detectingwhether a second contact interval follows said first contact interval inless than a second predetermined maximum time interval; f) circuitry forsetting the value of the ButtonState variable to the second button valueif said second contact interval does not follow said first contactinterval in less than said second predetermined maximum time interval;g) circuitry for determining if said second contact interval lastslonger than a third predetermined maximum time interval, if said secondcontact interval does follow said first contact interval in less thansaid second predetermined maximum time interval; h) circuitry forsupplying positional data relating to the second contact interval tosaid computer system to cause the cursor to move across said displayscreen, if said second contact interval lasts longer than said thirdpredetermined maximum time interval; i) circuitry for detecting whethera third contact interval follows said second contact interval in lessthan a fourth predetermined maximum time interval; j) circuitry forsetting the value of the ButtonState variable to the second button valueif said third contact interval does not follow said second contactinterval in less than said fourth predetermined maximum time interval;k) circuitry for determining if said third contact interval lasts longerthan a fifth predetermined maximum time interval, if said third contactinterval does follow the second contact interval in less than saidfourth predetermined maximum time interval; l) circuitry for supplyingpositional data relating to the third contact interval to said computersystem in order to maintain the cursor movements initiated by supplyingpositional data relating to the second contact interval to the computersystem, if said third contact interval last longer than said fifthpredetermined maximum time interval.
 7. The apparatus of claim 6 furthercomprising circuitry for setting the value of the ButtonState variableto the second button value if said third contact interval does not lastlonger than said fifth predetermined maximum time interval.
 8. Anapparatus for using a touch-sensitive input device coupled to a computersystem to move a cursor on a display screen of the computer system andto change the value of a ButtonState variable to one of a first buttonvalue and a second button value, said ButtonState variable simulating abutton state of a mechanical button switch, said apparatus comprising:a)circuitry for detecting a first contact interval when a user firstcontacts said touch-sensitive input device; b) circuitry for determiningif said first contact interval lasts loner than a first predeterminedmaximum time interval; c) circuitry for supplying positional datarelating to the first contact interval to said computer system to causethe cursor to move across said display screen if said first contactinterval lasts longer than said first predetermined maximum timeinterval; d) circuitry for setting the value of the ButtonState variableto the first button value if said first contact interval does not lastlonger than said first predetermined maximum interval; e) circuitry fordetecting whether a second contact interval follows said first contactinterval in less than a second predetermined maximum time interval; f)circuitry for setting the value of the ButtonState variable to thesecond button value if said second contact interval does not follow saidfirst contact interval in less than said second predetermined maximumtime interval; g) circuitry for determining if said second contactinterval lasts longer than a third predetermined maximum time interval,if said second contact interval does follow said first contact intervalin less than said second predetermined maximum time interval; h)circuitry for supplying positional data relating to the second contactinterval to said computer system to cause the cursor to move across saiddisplay screen, if said second contact interval lasts longer than saidthird predetermined maximum time interval; i) circuitry for setting thevalue of the ButtonState variable to the second button value if saidsecond contact interval does not last loner than said thirdpredetermined maximum time interval; j) circuitry for setting the valueof the ButtonState variable to the first button value; k) circuitry fordetecting whether a third contact interval follows said second contactinterval in less than a fourth predetermined maximum time interval; l)circuitry for setting the value of the ButtonState variable to thesecond button value if said third contact interval does not follow saidsecond contact interval in less than said fourth predetermined maximumtime interval; m) circuitry for determining if said third contactinterval lasts longer than a fifth predetermined maximum time interval,if said third contact interval does follow said second contact intervalin less than said fourth predetermined maximum time interval; and n)circuitry for supplying positional data relating to the third contactinterval to said computer system to cause the cursor to move across saiddisplay screen if said third contact interval lasts longer than saidfifth predetermined maximum time interval.
 9. A computer systemcomprising:a) a bus b) a touch-sensitive input device coupled to saidbus; c) an apparatus for using said touch-sensitive input device to movea cursor on a display screen of the computer system and to change thevalue of a ButtonState variable to one of a first button value and asecond button value, said ButtonState variable simulating a button stateof a mechanical button switch, said apparatus including:1) circuitry fordetecting a first contact interval when a user first contacts saidtouch-sensitive input device; 2) circuitry for determining if said firstcontact interval lasts loner than a first predetermined maximum timeinterval; 3) circuitry for supplying positional data relating to thefirst contact interval to said computer system to cause the cursor tomove across said display screen if said first contact interval lastslonger than said first predetermined maximum time interval; 4) circuitryfor setting the value of the ButtonState variable to the first buttonvalue if said first contact interval does not last longer than saidfirst predetermined maximum time interval 5) circuitry for detectingwhether a second contact interval follows said fist contact interval inless than a second predetermined maximum time interval; 6) circuitry forsetting the value of the ButtonState variable to the second button valueif said second contact interval does not follow said first contactinterval in less than said second predetermined maximum time interval;7) circuitry for determining if said second contact interval lastslonger than a third predetermined maximum time interval, if said secondcontact interval does follow said first contact interval in less thansaid second predetermined maximum time interval; 8) circuitry forsupplying positional data relating to the second contact interval tosaid computer system to cause the cursor to move across said displayscreen, if said second contact interval lasts longer than said thirdpredetermined maximum time interval; 9) circuitry for detecting whethera third contact interval follows said second contact interval in lessthan a fourth predetermined maximum time interval; 10) circuitry forsetting the value of the ButtonState variable to the second button valueif said third contact interval does not follow said second contactinterval in less than said fourth predetermined maximum time interval;11) circuitry for determining if said third contact interval lastslonger than a fifth predetermined maximum time interval, if said thirdcontact interval does follow the second contact interval in less thansaid fourth predetermined maximum time interval; and 12) circuitry forsupplying positional data relating to the third contact interval to saidcomputer system in order to maintain the cursor movements initiated bysupplying positional data relating to the second contact interval to thecomputer system, if said third contact interval lasts longer than saidfifth predetermined maximum time interval.
 10. The computer system ofclaim 9, wherein said apparatus further comprises circuitry for settingthe value of the ButtonState variable to the second button value if saidthird contact interval does not last longer than said fifthpredetermined maximum time interval.
 11. The computer system of claim10, wherein said apparatus further comprises:a) circuitry for settingthe value of the ButtonState variable to the second button value if saidsecond contact interval does not last longer than said thirdpredetermined maximum time interval; b) circuitry for setting the valueof the ButtonState variable to the first button value; c) circuitry fordetecting whether a third contact interval follows said second contactinterval in less than a fourth predetermined maximum time interval; andd) circuitry for setting the value of the ButtonState variable to thesecond button value if said third contact interval does not follow saidsecond contact interval in less than said fourth predetermined maximumtime interval.
 12. The computer system of claim 11, wherein saidapparatus further comprises:a) circuitry for determining if said thirdcontact interval lasts longer than a fifth predetermined maximum timeinterval, if said third contact interval does follow said second contactinterval in less than said fourth predetermined maximum time interval;and b) circuitry for supplying positional data relating to the thirdcontact interval to said computer system to cause the cursor to moveacross said display screen if said third contact interval lasts longerthan said fifth predetermined maximum time interval.